#include <iostream>
#include <map>

// 函数的格式是静态的
int c = 10; // 侵入式编程

// 函数 = 对象 ？
class Function
{
public:
    Function(int c) : c(c) {}
    int operator()(int a, int b) // 仿函数：重载小括号
    {                            // 具有更好的扩展性和封装性
        return a + b + c;
    }
private:
    int c; // 需要添加变量，从类内加
};

int add(int a, int b, int c)
{
    return a + b + c;
}

void print(int a, int b, Function &f)
{
    std::cout << f(a, b) << std::endl;
}

int main()
{
    // print(1, 2, add);
    Function f(10);
    // std::cout<<f(1,2)<<std::endl;
    print(1, 2, f);

    // std::greater<int> 
    return 0;
}
